
var chess = document.getElementById('chess');
var context = chess.getContext('2d');

var logo = new Image();
logo.src = "1.jpg";
logo.onload = function() {
	context.drawImage(logo, 0, 0, 450, 450);
	drawChessBoard();
}

var me = true;
var chessBoard = [];
for (var i = 0; i < 15; i++) {
	chessBoard[i] = [];
	for (var j = 0; j < 15; j++) {
		chessBoard[i][j] = 0;
	}
}

var finished = false;
chess.onclick = function(e) {
	if (finished){
		return;
	}
	if (!me) {
		return;
	}

	var x = e.offsetX;
	var y = e.offsetY;

	var i = Math.floor(x / 30);
	var j = Math.floor(y / 30);

	if (chessBoard[i][j] == 0) {
		console.log("Me Step");
		oneStep(i, j, me);
		chessBoard[i][j] = 1;
		for (var k = 0; k < count; k++) {
			if (allWins[i][j][k]) {
				myWin[k]++;
				computerWin[k] = 6;
				if (myWin[k] == 5) {
					window.alert("You Win");
					finished = true;
				}
			}
		}
	}
	// if (!finished) {
	// 	computerAI();
	// }
	if (!finished) {
		me = !me;
		computerAI();
	}
}

var computerAI = function() {
	console.log("Computer Step");
	var myScore = [];
	var computerScore = [];
	for (var i = 0; i < 15; i++) {
		myScore[i] = [];
		computerScore[i] = [];
		for (var j = 0; j < 15; j++) {
			myScore[i][j] = 0;
			computerScore[i][j] = 0;
		}
	}

	var max = 0;
	var maxI = 0;
	var maxJ = 0;
	for (var i = 0; i < 15; i++) {
		for (var j = 0; j < 15; j++) {
			if (chessBoard[i][j] == 0) {
				for (var k = 0; k < count; k++) {
					if (allWins[i][j][k]) {
						if (myWin[k] == 1) {
							myScore[i][j] += 200;
						} else if (myWin[k] == 2) {
							myScore[i][j] += 400;
						} else if (myWin[k] == 3) {
							myScore[i][j] += 2000;
						} else if (myWin[k] == 4) {
							myScore[i][j] += 10000;
						}
						if (computerWin[k] == 1) {
							computerScore[i][j] += 220;
						} else if (computerWin[k] == 2) {
							computerScore[i][j] += 420;
						} else if (computerWin[k] == 3) {
							computerScore[i][j] += 2200;
						} else if (computerWin[k] == 4) {
							computerScore[i][j] += 20000;
						}
					}
				}

				if (myScore[i][j] > max) {
					max = myScore[i][j];
					maxI = i;
					maxJ = j;
				} else if (myScore[i][j] == max) {
					if (computerScore[i][j] > computerScore[maxI][maxJ]) {
						maxI = i;
						maxJ = j;
					}
				}
				if (computerScore[i][j] > max) {
					max = computerScore[i][j];
					maxI = i;
					maxJ = j;
				} else if (computerScore[i][j] == max) {
					if (myScore[i][j] > myScore[maxI][maxJ]) {
						maxI = i;
						maxJ = j;
					}
				}
			}
		}
	}
	// if (me) {
	// 	oneStep(maxI, maxJ, me);
	// 	chessBoard[maxI][maxJ] = 1;
	// 	for (var k = 0; k < count; k++) {
	// 		if (allWins[maxI][maxJ][k]) {
	// 			myWin[k]++;
	// 			computerWin[k] = 6;
	// 			if (myWin[k] == 5) {
	// 				window.alert("You Win");
	// 				finished = true;
	// 			}
	// 		}
	// 	}
	// 	if (!finished) {
	// 		me = !me;
	// 	}
	// } else {
	// 	oneStep(maxI, maxJ, me);
	// 	chessBoard[maxI][maxJ] = 2;

	// 	for (var k = 0; k < count; k++) {
	// 		if (allWins[maxI][maxJ][k]) {
	// 			computerWin[k]++;
	// 			myWin[k] = 6;
	// 			if (computerWin[k] == 5) {
	// 				window.alert("Conputer Win");
	// 				finished = true;
	// 			}
	// 		}
	// 	}
	// 	if (!finished) {
	// 		me = !me;
	// 	}
	// }
	oneStep(maxI, maxJ, false);
	chessBoard[maxI][maxJ] = 2;

	for (var k = 0; k < count; k++) {
		if (allWins[maxI][maxJ][k]) {
			computerWin[k]++;
			myWin[k] = 6;
			if (computerWin[k] == 5) {
				window.alert("Conputer Win");
				finished = true;
			}
		}
	}
	if (!finished) {
		me = !me;
	}
}

var drawChessBoard = function() {
	context.strokeStyle = "#bfbfbf";
	for (var i = 0; i < 15; i++) {
		context.moveTo(15 + i * 30, 15);
		context.lineTo(15 + i * 30, 435);
		context.stroke();
		context.moveTo(15, 15 + i * 30);
		context.lineTo(435, 15 + i * 30);
		context.stroke();
	}
}

var oneStep = function(i, j, me) {
	context.beginPath();
	context.arc(15 + i * 30, 15 + j * 30, 13, 0, 2 * Math.PI);
	var gradient = context.createRadialGradient(15 + i * 30 + 2, 15 + j * 30 - 2, 13, 
		15 + i * 30 + 2, 15 + j * 30 - 2, 0);
	if (me) {
		gradient.addColorStop(0, "#0a0a0a");
		gradient.addColorStop(1, "#666666");
	} else {
		gradient.addColorStop(0, "#d1d1d1");
		gradient.addColorStop(1, "#f9f9f9");
	}

	context.fillStyle = gradient;
	context.fill();
	context.closePath();
}

var count = 0;
var allWins = [];
for (var i = 0; i < 15; i++) {
	allWins[i] = [];
	for (var j = 0; j < 15; j++) {
		allWins[i][j] = [];
	}
}

for (var i = 0; i < 15; i++) {
	for (var j = 0; j < 11; j++) {
		for (var k = 0; k < 5; k++) {
			allWins[i][j + k][count] = true;
		}
		count++;
	}
}

for (var i = 0; i < 15; i++) {
	for (var j = 0; j < 11; j++) {
		for (var k = 0; k < 5; k++) {
			allWins[j + k][i][count] = true;
		}
		count++;
	}
}

for (var i = 0; i < 11; i++) {
	for (var j = 0; j < 11; j++) {
		for (var k = 0; k < 5; k++) {
			allWins[i + k][j + k][count] = true;
		}
		count++;
	}
}

for (var i = 4; i < 15; i++) {
	for (var j = 0; j < 11; j++) {
		for (var k = 0; k < 5; k++) {
			allWins[i - k][j + k][count] = true;
		}
		count++;
	}
}
console.log(count);

var myWin = [];
var computerWin = [];
for (var i = 0; i < count; i++) {
	myWin[i] = 0;
	computerWin[i] = 0;
}

